﻿//using System;
//using System.Collections.Concurrent;
//using System.Collections.Generic;
//using System.IO;
//using System.Net;
//using System.Net.Sockets;
//using System.Threading;
//using System.Threading.Tasks;
//using System.Windows.Forms;
//using static System.Windows.Forms.VisualStyles.VisualStyleElement;

//namespace WindowsFormsApp5
//{
//    public partial class Form1 : Form
//    {
//        private TcpListener _server;
//        private bool _isRunning;
//        private ConcurrentDictionary<Guid, TcpClient> _clients; // 用于存储客户端和它们的唯一标识
//        private TcpClient _currentClient; // 当前连接的客户端

//        public Form1()
//        {
//            InitializeComponent();
//            _clients = new ConcurrentDictionary<Guid, TcpClient>(); // 初始化字典
//        }

//        private async void button1_Click(object sender, EventArgs e)
//        {
//            if (_currentClient == null)
//            {
//                MessageBox.Show("没有连接的客户端.");
//                return;
//            }

//            string command = textBox1.Text; // 从 textBox1 获取指令
//            if (!string.IsNullOrWhiteSpace(command) && _currentClient.Connected)
//            {
//                await SendCommandToClientAsync(_currentClient, command); // 发送指令到客户端
//                textBox1.Clear(); // 清空输入框
//            }
//            else
//            {
//                MessageBox.Show("指令不能为空或客户端未连接.");
//            }
//        }

//        private void Form1_Load(object sender, EventArgs e)
//        {
//            var serverThread = new Thread(() => Start("0.0.0.0", 12345)); // 启动服务器的线程
//            serverThread.IsBackground = true; // 设置为后台线程
//            serverThread.Start();
//        }

//        public void Start(string ipAddress, int port)
//        {
//            _server = new TcpListener(IPAddress.Parse(ipAddress), port);
//            _server.Start();
//            _isRunning = true;
//            Console.WriteLine("服务器已启动，等待连接...");

//            while (_isRunning)
//            {
//                try
//                {
//                    var client = _server.AcceptTcpClient(); // 等待客户端连接
//                    Guid clientId = Guid.NewGuid(); // 生成唯一标识
//                    _clients.TryAdd(clientId, client); // 将客户端与标识存入字典
//                    _currentClient = client; // 保存当前连接的客户端

//                    Console.WriteLine($"客户端 {clientId} 已连接.");
//                    Thread clientThread = new Thread(() => HandleClient(client, clientId));
//                    clientThread.IsBackground = true; // 设置为后台线程
//                    clientThread.Start(); // 启动处理客户端的线程
//                }
//                catch (SocketException ex)
//                {
//                    Console.WriteLine($"SocketException: {ex.Message}");
//                }
//            }
//        }

//        private void HandleClient(TcpClient client, Guid clientId)
//        {
//            using (var stream = client.GetStream())
//            using (var reader = new StreamReader(stream))
//            using (var writer = new StreamWriter(stream) { AutoFlush = true })
//            {
//                try
//                {
//                    string message;
//                    while ((message = reader.ReadLine()) != null) // 循环读取客户端消息
//                    {
//                        Console.WriteLine($"接收到来自客户端 {clientId} 的消息: {message}");
//                        writer.WriteLine($"服务器已收到来自客户端 {clientId} 的消息: {message}");
//                    }
//                }
//                catch (IOException e)
//                {
//                    Console.WriteLine($"客户端 {clientId} 连接异常: {e.Message}");
//                }
//                finally
//                {
//                    // 从字典中移除客户端
//                    _clients.TryRemove(clientId, out _);
//                    client.Close();
//                    Console.WriteLine($"客户端 {clientId} 连接已关闭.");
//                }
//            }
//        }

//        private async Task SendCommandToClientAsync(TcpClient client, string command)
//        {
//            await Task.Run(() =>
//            {
//                using (var stream = client.GetStream())
//                using (var writer = new StreamWriter(stream) { AutoFlush = true })
//                using (var reader = new StreamReader(stream))
//                {
//                    writer.WriteLine(command); // 发送指令
//                    Console.WriteLine($"已发送指令给客户端: {command}");

//                    List<string> responses = new List<string>(); // 创建一个列表来存储响应

//                    // 循环等待并读取客户端的响应
//                    string response;
//                    while ((response = reader.ReadLine()) != null) // 循环读取
//                    {
//                        responses.Add(response); // 将每条响应添加到列表中
//                    }

//                    // 一次性输出所有响应
//                    Console.WriteLine("从客户端接收到的所有响应:" + string.Join(", ", responses));
//                }
//            });
//        }
//    }
//}
